// 物品 A B C D
// 价格 50 220 60 60
// 尺寸 5 20 10 12
// 比率 10 11 6 5
function greedy(values, weights, capacity) {
  var returnValue = 0
  var remainCapacity = capacity
  var sortArray = []
  values.map((cur, index) => {
    sortArray.push({
      'value': values[index],
      'weight': weights[index],
      'ratio': values[index] / weights[index]
    })
  })
  sortArray.sort(function (a, b) {
    return b.ratio > a.ratio
  })
  console.log(sortArray)
  sortArray.map((cur, index) => {
    var num = parseInt(remainCapacity / cur.weight)
    remainCapacity -= num * cur.weight
    returnValue += num * cur.value
  })
  return returnValue
}
var items = ['A', 'B', 'C', 'D']
var values = [220, 50, 60, 60]
var weights = [20, 5, 10, 12]
var capacity = 32 //背包容积(能容重量)

// 最大的价值输出
console.log(greedy(values, weights, capacity)); // 320

// 固定容积的背包能放入物品的总最大价值
// * 当需要实时解决方案且近似答案“足够好” 时，贪心算法最适用。
// * 显然，贪心算法可在确保产生最佳解决方案的同时最大程度地减少时间，因此更适用于需要较少时间的情况。
// * 缺点
// 贪婪算法基本上是逐个部分地建立解决方案，然后选择下一部分，以便立即产生当前问题的最佳解决
// 无需考虑或担心当前决定的后果。从来没有重新考虑以前的选择，尽管贪婪算法给出了接近最优的解决方案，
// 但它未能产生最优的解决方案。